package inge_soft.gestoriusNuevo.business.controller.implementation;

import inge_soft.gestoriusNuevo.business.service.abstraction.IProcesarSolicitudService;
import inge_soft.gestoriusNuevo.business.service.abstraction.IUsuarioService;
import inge_soft.gestoriusNuevo.persistence.DAO.Exceptions.Implementation.UsuarioInexistenteException;
import inge_soft.gestoriusNuevo.persistence.entity.implementation.SolicitudOrganizador;
import inge_soft.gestoriusNuevo.support.Global;
import inge_soft.gestoriusNuevo.support.SecurityUtil;

import java.util.Date;

import org.zkoss.bind.annotation.BindingParam;
import org.zkoss.bind.annotation.Command;

import org.zkoss.zk.ui.Executions;
import org.zkoss.zk.ui.event.Event;
import org.zkoss.zk.ui.event.EventListener;
import org.zkoss.zk.ui.select.annotation.VariableResolver;
import org.zkoss.zk.ui.select.annotation.WireVariable;
import org.zkoss.zul.Messagebox;

@VariableResolver(org.zkoss.zkplus.spring.DelegatingVariableResolver.class)
public class ServicePanelUsuario {

	@WireVariable("procesarSolicitudService")
	private IProcesarSolicitudService procesarSolicitudService;
	@WireVariable("usuarioService")
	private IUsuarioService usuarioService;

	public ServicePanelUsuario() {

	}

	@Command
	public void serOrganizador() {
		if (!procesarSolicitudService.tieneSolicitudPendiente(Global.PENDIENTE , usuarioService.obtenerUsuarioRegistrado(SecurityUtil.getUser().getUsername()).getUsuario())){
			Messagebox.show("Ya tiene una solicitud pendiente . En breve se le confirmara la solicitud enviada anteriormente");
			return;
		}
		
		Messagebox.show("Esta seguro de solicitar ser organizador de eventos?",
				"Confirmacion", Messagebox.OK | Messagebox.CANCEL, null,
				new EventListener<Event>() {

					public void onEvent(Event event) throws Exception {
						if (event.getName().equals("onOK")) {

							try {

								SolicitudOrganizador soliUsu = new SolicitudOrganizador(
										usuarioService.obtenerUsuarioRegistrado(SecurityUtil.getUser().getUsername()).getUsuario(), 
										new Date(),
										Global.PENDIENTE);
								// soli.crear(new
								// SolicitudOrganizador(usuarioService.obtenerUsuarioRegistrado(SecurityUtil.getUser().getUsername()).getUsuario(),
								// new Date(), true));

								procesarSolicitudService.nuevaSolicitudOrganizador(soliUsu);

								Messagebox.show("Se envio la solicitud para ser organizador de eventos. Un administrador evaluara su solicitud");
							} catch (UsuarioInexistenteException e1) {
								Messagebox.show(e1.toString());

							}

						}
					}
				});

	}
	
	@Command
	public void irPantallaModerador() {
		Executions.getCurrent().sendRedirect("PrincipalModerador.zul","");
	}

	@Command
	public void misDatos() {

	}

	@Command
	public void eventosPasados() {

	}

	@Command
	public void eventosFuturos() {

	}

	@Command
	public void extras() {

	}

	@Command
	public void calendario() {

	}

}
